from .types import (
    Capture as Capture,
    Filename as Filename,
    FilenameMatcher as FilenameMatcher,
    LN as LN,
    SYMBOL as SYMBOL,
    TOKEN as TOKEN,
)
from typing import Any, List, Optional, Sequence, Union

log: Any
INDENT_STR: str

def print_selector_pattern(
    node: LN, results: Capture = ..., filename: Filename = ..., first: bool = ...
) -> Any: ...
def print_tree(
    node: LN,
    results: Capture = ...,
    filename: Filename = ...,
    indent: int = ...,
    recurse: int = ...,
) -> Any: ...
def dotted_parts(name: str) -> List[str]: ...
def quoted_parts(name: str) -> List[str]: ...
def power_parts(name: str) -> List[str]: ...
def is_method(node: LN) -> bool: ...
def is_call_to(node: LN, func_name: str) -> bool: ...
def find_first(node: LN, target: int, recursive: bool = ...) -> Optional[LN]: ...
def find_previous(node: LN, target: int, recursive: bool = ...) -> Optional[LN]: ...
def find_next(node: LN, target: int, recursive: bool = ...) -> Optional[LN]: ...
def find_last(node: LN, target: int, recursive: bool = ...) -> Optional[LN]: ...
def get_class(node: LN) -> LN: ...

class Once:
    done: bool = ...
    def __init__(self) -> None: ...
    def __bool__(self) -> bool: ...

def filename_endswith(ext: Union[Sequence, str]) -> FilenameMatcher: ...
